﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using IP.Core.IPCommon;
using IP.Core.IPData;
using IP.Core.IPUserService;

using BKIUS;
using BKIDS;
using BKIDS.CDBNames;
using System.Data;


public partial class QuanLyNhanSu_F201_QuanLyDoiTuong : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        m_lbl_mess.Visible = true;
        m_upload_anh_minh_hoa.SaveToDirectory = "../Images/AnhCaNhan";
        m_directory_imgs = "../../Images/AnhCaNhan";
        m_upload_anh_minh_hoa.ContentFileType = "jpg,gif,jpeg,png";
        m_upload_anh_minh_hoa.EnableRename = false;

        if (!IsPostBack)
        {
            load_data_2_grid();
        }        
    }

    #region Members
    US_DM_DOI_TUONG m_us_dm_doi_tuong = new US_DM_DOI_TUONG();
    DS_DM_DOI_TUONG m_ds_dm_doi_tuong = new DS_DM_DOI_TUONG();

    string m_directory_imgs = "";
    #endregion

    #region Public Interface
    public string mapping_YN(string ip_str_YN)
    {
        if (ip_str_YN == "") return "";
        if (ip_str_YN.Equals("Y"))
            return "Nam";
        return "Nữ";
    }
    #endregion

    #region Data Structure
    private enum eColNumber
    {
        ma_thanh_vien = 1
        ,
        ten_dang_nhap = 2
            ,
        mat_khau = 3
            ,
        ho_va_ten_dem = 4

            ,
        que_quan = 5
            ,
        dia_chi_hien_tai = 6
            ,
        noi_cong_tac = 7

            ,
        truong_dao_tao_da_hoc = 8
            ,
        khoa_nganh_da_hoc = 9

            ,
        mobile_phone = 10
            ,
        email_ca_nhan = 11
            ,
        emailBKIndex = 12

            ,
        so_cmnd = 13
            ,
        noi_cap = 14

            ,
        ma_so_thue = 15
            ,
        so_tai_khoan = 16
            ,
        ten_ngan_hang = 17

            , description = 18
    }
    #endregion

    #region Private Method
    /// <summary>
    /// Khi Form bắt đầu load sẽ gọi phương thức này
    /// </summary>
    private void set_inital_form_load()
    {
        load_data_2_grid();
    }
    private void reset_control()
    {
        m_txt_ma_doi_tuong.Text = "";                
        m_txt_ho_va_ten_dem.Text = "";
        m_txt_ten.Text = "";

        rb_gioi_tinh.Items[0].Selected = true;
        m_txt_que_quan.Text = "";
        m_txt_dia_chi_hien_tai.Text = "";

        m_txt_truong_dao_tao_da_hoc.Text = "";
        m_txt_khoa_nganh_da_hoc.Text = "";

        m_txt_mobile_phone.Text = "";
        m_txt_email_ca_nhan.Text = "";        

        m_txt_so_cmnd.Text = "";
        m_txt_noi_cap.Text = "";
        
        m_txt_so_tai_khoan.Text = "";
        m_txt_ten_ngan_hang.Text = "";

        m_txt_description.Text = "";
    }
    private void load_data_2_grid()
    {
        try
        {
            // Đổ dữ liệu từ US vào DS
            m_us_dm_doi_tuong.FillDataset(m_ds_dm_doi_tuong);
            // Treo dữ liệu lên lưới
            m_grv_dm_doi_tuong.DataSource = m_ds_dm_doi_tuong.DM_DOI_TUONG;
            m_grv_dm_doi_tuong.DataBind();
        }
        catch (Exception v_e)
        {
            //nhớ using Ip.Common
            CSystemLog_301.ExceptionHandle(this, v_e);
        }
    }
    /// <summary>
    /// B1 Lấy dữ liệu trong CSDL đổ vào us đấy
    /// </summary>
    /// <param name="ip_int_stt_row"></param>
    private void load_data_2_us_update(int ip_int_stt_row)
    {
        // Lấy ID dựa vào thứ tự dòng
        decimal v_dc_id_dm_doi_tuong = CIPConvert.ToDecimal(m_grv_dm_doi_tuong.DataKeys[ip_int_stt_row].Value);
        
        // Lấy dữ liệu từ CSDL dựa vào ID vừa có
        m_us_dm_doi_tuong = new US_DM_DOI_TUONG(v_dc_id_dm_doi_tuong);
        //Đổ dữ liệu vào Hidden field
        //hdf_id.Value = CIPConvert.ToStr(ip_int_stt_row);
        m_txt_ten.ToolTip = CIPConvert.ToStr(m_us_dm_doi_tuong.dcID);

    }
    /// <summary>
    /// B2 Đổ US lên form
    /// </summary>
    /// <param name="ip_US_DM_DOI_TUONG"></param>
    private void us_object_2_form(US_DM_DOI_TUONG ip_US_DM_DOI_TUONG)
    {
        m_txt_ma_doi_tuong.Text = m_us_dm_doi_tuong.strMA_DOI_TUONG;
        m_txt_ho_va_ten_dem.Text = m_us_dm_doi_tuong.strHO_VA_TEN_DEM;
        m_txt_ten.Text = m_us_dm_doi_tuong.strTEN;        
        
        if (!ip_US_DM_DOI_TUONG.IsNGAY_SINHNull() || ip_US_DM_DOI_TUONG.datNGAY_SINH != CIPConvert.ToDatetime("01/01/1900", "dd/MM/yyyy"))
            m_dat_ngay_sinh_tv.SelectedDate = ip_US_DM_DOI_TUONG.datNGAY_SINH;
        if (!ip_US_DM_DOI_TUONG.IsNGAY_CAPNull() || ip_US_DM_DOI_TUONG.datNGAY_CAP != CIPConvert.ToDatetime("01/01/1900", "dd/MM/yyyy"))
            m_dat_ngay_cap.SelectedDate = ip_US_DM_DOI_TUONG.datNGAY_CAP;
      
        if (ip_US_DM_DOI_TUONG.strGIOI_TINH_YN == "Y") rb_gioi_tinh.Items[0].Selected = true;
        else rb_gioi_tinh.Items[1].Selected = true;
        m_txt_dia_chi_hien_tai.Text = m_us_dm_doi_tuong.strDIA_CHI_HIEN_TAI;
        m_txt_que_quan.Text = m_us_dm_doi_tuong.strQUE_QUAN;
        m_txt_khoa_nganh_da_hoc.Text = m_us_dm_doi_tuong.strKHOA_NGANH;
        m_txt_truong_dao_tao_da_hoc.Text = m_us_dm_doi_tuong.strTRUONG_DAO_TAO;
        m_txt_so_cmnd.Text = m_us_dm_doi_tuong.strSO_CMND;
        m_txt_noi_cap.Text = m_us_dm_doi_tuong.strNOI_CAP;
        m_txt_mobile_phone.Text = m_us_dm_doi_tuong.strDIEN_THOAI;
        m_txt_email_ca_nhan.Text = m_us_dm_doi_tuong.strEMAIL_CA_NHAN;                
        m_txt_ten_ngan_hang.Text = m_us_dm_doi_tuong.strTEN_NGAN_HANG;
        m_txt_so_tai_khoan.Text = m_us_dm_doi_tuong.strSO_TAI_KHOAN;
    }
    /// <summary>
    /// Lấy dữ liệu trên form vào CSDL
    /// </summary>
    private void form_2_us_object()
    {
        System.Globalization.CultureInfo enUS = new System.Globalization.CultureInfo("en-US");
        m_us_dm_doi_tuong.strMA_DOI_TUONG = m_txt_ma_doi_tuong.Text.Trim();
        m_us_dm_doi_tuong.strHO_VA_TEN_DEM = m_txt_ho_va_ten_dem.Text.Trim();
        m_us_dm_doi_tuong.strTEN = m_txt_ten.Text.Trim();     
        DateTime v_dat_out_result_ngay_sinh;
        // Kiểm tra đúng định dạng datetime
        if (DateTime.TryParseExact(CIPConvert.ToStr(m_dat_ngay_sinh_tv.SelectedDate), "dd/MM/yyyy", enUS, System.Globalization.DateTimeStyles.None, out v_dat_out_result_ngay_sinh))
        {
            if (m_dat_ngay_sinh_tv.SelectedDate != CIPConvert.ToDatetime("01/01/0001"))
                m_us_dm_doi_tuong.datNGAY_SINH = m_dat_ngay_sinh_tv.SelectedDate;
            else m_us_dm_doi_tuong.SetNGAY_SINHNull();
        }
        m_us_dm_doi_tuong.strGIOI_TINH_YN = rb_gioi_tinh.Items[0].Selected ? "Y" : "N";
        m_us_dm_doi_tuong.strDIA_CHI_HIEN_TAI = m_txt_dia_chi_hien_tai.Text.Trim();
        m_us_dm_doi_tuong.strQUE_QUAN = m_txt_que_quan.Text.Trim();
        m_us_dm_doi_tuong.strKHOA_NGANH = m_txt_khoa_nganh_da_hoc.Text.Trim();
        m_us_dm_doi_tuong.strTRUONG_DAO_TAO = m_txt_truong_dao_tao_da_hoc.Text.Trim();
        m_us_dm_doi_tuong.strSO_CMND = m_txt_so_cmnd.Text.Trim();
        DateTime v_dat_out_result_ngay_cap_CMTND;
        // Kiểm tra đúng định dạng datetime
        if (DateTime.TryParseExact(CIPConvert.ToStr(m_dat_ngay_sinh_tv.SelectedDate), "dd/MM/yyyy", enUS, System.Globalization.DateTimeStyles.None, out v_dat_out_result_ngay_cap_CMTND))
        {
            if (m_dat_ngay_sinh_tv.SelectedDate != CIPConvert.ToDatetime("01/01/0001"))
                m_us_dm_doi_tuong.datNGAY_CAP = m_dat_ngay_cap.SelectedDate;
            else m_us_dm_doi_tuong.SetNGAY_CAPNull();
        }
        m_us_dm_doi_tuong.strNOI_CAP = m_txt_noi_cap.Text.Trim();       
        
        m_us_dm_doi_tuong.strDIEN_THOAI = m_txt_mobile_phone.Text.Trim();
        m_us_dm_doi_tuong.strEMAIL_CA_NHAN = m_txt_email_ca_nhan.Text.Trim();                
        m_us_dm_doi_tuong.strTEN_NGAN_HANG = m_txt_ten_ngan_hang.Text.Trim();
        m_us_dm_doi_tuong.strSO_TAI_KHOAN = m_txt_so_tai_khoan.Text.Trim();
    }

    /// <summary>
    /// Tìm kiếm dữ liệu và load lên data grid
    /// </summary>
    private void get_form_search_data_and_load_to_grid()
    {
        try
        {
            // thu thập dữ liệu            
            string v_str_search_key_word = m_txt_tu_khoa_tim_kiem.Text.Trim();

            // Thực hiện Search
            m_us_dm_doi_tuong.search_doi_tuong(v_str_search_key_word,CIPConvert.ToDecimal(0),"A","","",m_ds_dm_doi_tuong);                                                
            m_grv_dm_doi_tuong.DataSource = m_ds_dm_doi_tuong.DM_DOI_TUONG;
            m_grv_dm_doi_tuong.DataBind();
        }
        catch (Exception v_e)
        {
            throw v_e;
        }
    }
    #endregion

    #region Events
    protected void m_cmd_tao_moi_Click(object sender, EventArgs e)
    {
        try
        {
            // Đưa dữ liệu từ US lên form
            form_2_us_object();
            // Thêm dữ liệu vào CSDL
            m_us_dm_doi_tuong.Insert();
            // Load dữ liệu lên grid 
            load_data_2_grid();
            m_lbl_mess.Text = "";
        }
        catch (Exception v_e)
        {
            CSystemLog_301.ExceptionHandle(this, v_e);
        }
    }
    protected void m_grv_dm_doi_tuong_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        try
        {
            //B1: lấy được dữ liệu của dòng vừa chọn và đổ lên form
            load_data_2_us_update(e.RowIndex); // dữ liệu đang được chứa ở m_us_dm_thanh_vien
            // B2: Đổ dữ liệu từ US lên form
            us_object_2_form(m_us_dm_doi_tuong);
            m_lbl_mess.Visible = false;
        }
        catch (Exception v_e)
        {
            CSystemLog_301.ExceptionHandle(this, v_e);
        }
    }
    protected void m_cmd_cap_nhat_Click(object sender, EventArgs e)
    {
        try
        {
            if (m_txt_ten.ToolTip.Trim().Equals(""))
            {
                m_lbl_mess.Visible = true;
                m_lbl_mess.Text = "Bạn chưa chọn một dòng để cập nhật";
                return;
            }
            form_2_us_object();
            // Lấy dữ liệu cho ID
            m_us_dm_doi_tuong.dcID = CIPConvert.ToDecimal(m_txt_ten.ToolTip);
            m_us_dm_doi_tuong.Update();
            load_data_2_grid();
            reset_control();
            m_txt_ten.ToolTip = "";
            m_lbl_mess.Text = "Cập nhật dữ liệu thành công";
        }
        catch (Exception v_e)
        {
            CSystemLog_301.ExceptionHandle(this, v_e);
        }
    }
    protected void m_cmd_delete_Click(object sender, EventArgs e)
    {
        try
        {
            reset_control();
        }
        catch (Exception v_e)
        {
            CSystemLog_301.ExceptionHandle(this, v_e);
        }
    }
    protected void m_grv_dm_doi_tuong_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        try
        {
            //  Lấy Id dựa vào số thứ tự dòng
            decimal v_dc_id_dm_thanh_vien_tt = CIPConvert.ToDecimal(m_grv_dm_doi_tuong.DataKeys[e.RowIndex].Value);
            // Xóa dữ liệu dựa vào Id
            m_us_dm_doi_tuong.DeleteByID(v_dc_id_dm_thanh_vien_tt);
            load_data_2_grid();
            m_lbl_mess.Text = "Xóa dữ liệu thành công";
        }
        catch (Exception v_e)
        {
            CSystemLog_301.ExceptionHandle(this, v_e);
        }
    }
    protected void btn_loc_doi_tuong_Click(object sender, EventArgs e)
    {
        try
        {
            get_form_search_data_and_load_to_grid();
        }
        catch (Exception v_e)
        {
            CSystemLog_301.ExceptionHandle(this, v_e);
        }
    }
    #endregion
}